# -*- coding:UTF-8 -*-
'''
开发环境：PyCharm
创建日期：2025/8/7 11:52
作   者：新启典学苑-樱桃
描   述：

    强制等待：sleep(n)   网页加载有快有慢，设置的值不确定多少合适。长了导致脚本执行效率低。短了时间不够。
    隐式等待：全局等待，设置一个最大等待时间。对整个执行过程生效。不够灵活，不够精准。
    显式等待：针对单个元素。显式等待元素出现、等待某个元素可点击、等待窗口标题变为xxx。等待某个条件达成。
           更加灵活，语法复杂。
'''
from time import sleep

from selenium import webdriver
from selenium.webdriver import Keys, ActionChains
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions
from selenium.webdriver.support.wait import WebDriverWait

driver = webdriver.Edge()  # 创建edge浏览器对象
driver.get("http://www.baidu.com")

driver.implicitly_wait(10)   # 隐式等待

# 显式等待，定位百度搜索输入框
locator = (By.ID, "kw")  # 定位器，元组
locator = (By.NAME, "wd")  # 定位器，元组
a = expected_conditions.presence_of_element_located(locator)  # 定义的等待条件
# 显式等待返回要查找的元素
b = WebDriverWait(driver, 5, 0.5).until(a) # until中是一个条件
print(b.get_dom_attribute("name"))

# 简化为一句
b = WebDriverWait(driver, 5, 0.5).until(
   expected_conditions.presence_of_element_located((By.ID, "kw"))
)
print(b.get_dom_attribute("name"))